草庐IT

java - DRY:最小化 Java 中的重复代码

全部标签

ruby - 了解 Ruby 中的私有(private)方法

classExampleprivatedefexample_testputs'Hello'endende=Example.newe.example_test这当然行不通,因为我们指定了显式接收者-Example(e)的实例,这违反了“私有(private)规则”。但我不明白,为什么不能在Ruby中这样做:classFoodefpublic_mself.private_m#public_m方法定义中的当前对象(即self)是Foo的实例。那么为什么不允许呢?要解决这个问题,我必须将self.private_m更改为private_m。但为什么这不同,self不是public_m中的Foo

ruby - Ruby 中的 method_missing 陷阱

在Ruby中定义method_missing方法有什么需要注意的地方吗?我想知道是否存在一些不太明显的来自继承、异常抛出、性能或其他任何方面的交互。 最佳答案 一个有点明显的:总是重新定义respond_to?如果你重新定义method_missing。如果method_missing(:sym)有效,respond_to?(:sym)应该总是返回true。许多图书馆都依赖于此。稍后:一个例子:#WrapaFoo;don'texposetheinternalguts.#Passanymethodthatstartswith'a'on

ruby-on-rails - Ruby/Rails 有没有办法执行字符串中的代码?

所以我有一个包含不同代码示例(阅读片段)的数据库。代码示例由用户创建。在Rails中有没有办法执行它?例如,我的数据库中有以下代码(id=123):return@var.reverse有没有办法让我执行它?像这样的东西:@var='Hello'@result=exec(CodeSample.find(123))所以结果会是'olleH' 最佳答案 您可以使用eval:code='@var.reverse'@var='Hello'@result=eval(code)#=>"olleH"但是这样做要非常小心;您授予该代码对您系统的完全访

ruby - Ruby 中的 $1 和\1

在Ruby中使用正则表达式时,$1和\1有什么区别? 最佳答案 \1是一个反向引用,它只能在相同的sub或gsub方法调用中工作,例如:"foobar".sub(/foo(.*)/,'\1\1')#=>"barbar"$1是一个全局变量,可以在后面的代码中使用:if"foobar"=~/foo(.*)/thenputs"Thematchingwordwas#{$1}"end输出:"Thematchingwordwasbar"#=>nil 关于ruby-Ruby中的$1和\1,我们在Sta

ruby - 如何在 Ruby 中获取命名空间中的所有类名?

我有一个模块Foo,它是许多类的命名空间,例如Foo::Bar、Foo::Baz等等上。有没有办法返回所有由Foo命名空间的类名? 最佳答案 Foo.constants返回Foo中的所有常量。这包括但不限于类名。如果你只想要类名,你可以使用Foo.constants.select{|c|Foo.const_get(c).is_a?Class}如果你想要类名和模块名,你可以使用is_a?模块而不是is_a?类。 关于ruby-如何在Ruby中获取命名空间中的所有类名?,我们在StackOv

ruby - 使用 `?`(问号)在 Ruby 中获取 ASCII 字符代码失败

我现在需要一个字符的ASCII值(对于ProjectEulerquestion#22,如果你想得到具体的),我遇到了一个问题。作为ruby​​的新手,我用谷歌搜索了一下,发现?是要走的路:?A或其他。但是当我将它合并到我的代码中时,该语句的结果是字符串"A"——没有字符代码。[0]和slice(0)存在同样的问题,理论上它们都应该返回ASCII码。我唯一能想到的是这是ruby版本问题。我正在使用1.9.1-p0,今天下午从1.8.6升级。我从Ruby的工作版本开始,在同一个目录中做了一些欺骗,我想我可能已经有了没有与.zip文件捆绑在一起的文件,所以我没有下载它们。那么为什么我的所有A

ruby - Ruby 中的 super 关键字

这段代码中的super是做什么用的?definitializeoptions={},&block@filter=options.delete(:filter)||1superend据我所知,这就像递归调用函数,对吧? 最佳答案 no...super调用父类的方法,如果存在的话。此外,正如@EnabrenTane指出的那样,它还将所有参数传递给父类方法。 关于ruby-Ruby中的super关键字,我们在StackOverflow上找到一个类似的问题: http

ruby - ruby 哈希中的条件键/值

是否有一种很好的(单行)方式在ruby​​中编写一个散列,只有在满足条件时才会有一些条目?我想到了{:a=>'a',:b=>('b'ifcondition)}但是,如果条件不满足,那么:b==nil就会结束。我意识到这可以在两行左右轻松完成,但在一行中会更好(例如,将散列传递给函数时)。我是否(还)错过了ruby​​的另一个惊人功能?;) 最佳答案 更新Ruby2.4+自ruby​​2.4.0起,您可以使用compact方法:{a:'a',b:('b'ifcond)}.compact原始答案(Ruby1.9.2)当条件不满足时,你可

ruby - Ruby 中的 File.open、open 和 IO.foreach 有什么区别?

以下所有API都做同样的事情:打开一个文件并为每一行调用一个block。我们应该优先使用一个而不是另一个吗?File.open("file").each_line{|line|putsline}open("file").each_line{|line|putsline}IO.foreach("file"){|line|putsline} 最佳答案 这3个选择之间存在重要差异。File.open("file").each_line{|行|放置行File.open打开一个本地文件并返回一个文件对象文件保持打开状态,直到您对其调用IO#c

ruby-on-rails - Rails - 如何在代码中检查开发者模式或生产模式

我正在用Rails做一个项目,我想知道如何检查我在代码中运行的是开发模式还是生产模式?谢谢 最佳答案 Rails.env=="production"Rails.env=="development"正如@xoebus所提到的,这要好得多:Rails.env.production?Rails.env.development? 关于ruby-on-rails-Rails-如何在代码中检查开发者模式或生产模式,我们在StackOverflow上找到一个类似的问题: h